perm filename FINDAF.REF[UP,DOC] blob sn#456381 filedate 1979-07-07 generic text, type C, neo UTF8
COMMENT ⊗   VALID 00004 PAGES
C REC  PAGE   DESCRIPTION
C00001 00001
C00002 00002	FIND-A-FONT
C00010 00003	APL25.FNT[XGP,SYS]/-sticky
C00013 00004	.r findaf
C00018 ENDMK
C⊗;
FIND-A-FONT

	Find-A-Font is a program for preparing font cataloges in the
style of "FIND-A-FONT".  It is hoped that this program will make the
preparation of these cataloges an order of magnitude easier task.

	The approach taken in these programs is that much of the
task of printing font descriptions can be catagorized and parameterized.
Given these parameterizations, a program is capable of outputing the
appropriate set of commands to create the catalog.

	Now, much of the "catalog output file" activities have already
been solved; there are programs for the transformation of text
files into .XGP file; most notable among these is PUB.  FIND-A-FONT
processes its input into a series of PUB format files; PUB can be
run on these files, or further (perhaps automatic) editing can be
accomplished.

	What FIND-A-FONT does is prepare these files from commands.
Commands consist of strings separated by with the character "⊗".
(See the page 3 for a sample command file.)
A command has two parts; a FONT defintion, and a series of switches.
The FONT definition is the name of a font; an area and extension may be
specified.  It is separated from the switches by a "/".

	There are currently 16 different switches; These are explained below
Switches are separated with semicolons.  A switch can be negated, which
"turns it off", or followed by a value.  The switch and its value are 
separated by an "=".  Switch names can be uniquely abbreviated; if
you abbreviate a switch name un-uniquely (un-uniquely?), something
interesting might happen.

	The switch "STICKY", while not effecting the output of a particular
command, makes all switches in that command after that point "sticky".
That is, they remain on for subsequent commands, until either the
next "STICKY" switch, or a negated "STICKY" switch.  A particular
command that wants to turn off or reset a particular switch may do
so without changing the set of sticky commands.

	SWITCH			EFFECT
STICKY			The remaining switches in this command are to
			be in effect for further commands.
NEWFILE=<file name>	Direct further output to the file named.  If
			no file is specified, the incremented base file
			(see below) is used.
SKIPFONT=<integer>	<integer> font's are "skipped" in the output
			file; these fonts might be used for whatever
			nefarious purposes you have in mind.
TITLE=<string>		Print out, in the selected font, this string, centered.
			THEN GO TO THE NEXT COMMAND.  The rest of the
			description (except PUB commands) will not be 
			printed for this font.
PUB=<any string>	This string is inserted into the output file.
VARIETY=<string>	Oh, something like "Bodoni" or "News Gothic"
BY=<pub cmd>		Author of this font.  This will be evaluated by
			pub.  All of the current font writers are in the
			macros file.  If an author is not specified, the
			last writer of the font file is used.
MESSAGE=<string>	What the font might be good for; i.e. "Rather ragged."
CLASS=<string>		If string is specified, it goes into the output.
			If not, the classification program is called, and
			its idea of the type of the font "Full SAIL set"
			"ASCII", etc) is inserted.
SAMPLE			Print a request for a sample for the index
NONPRINTING		Include the "control" characters (VT,FF,CR, etc)
			in the output.
LIGATURES=<charstring>	Put the characters in <charstring> under the classification
			"Ligatures:" in a matrix.
SUBSTITUTIONS=<charstring>
			Same, but for "Substitutions:"
SPECIAL=<name>:<charstring>
			Same, but for "<name>"
ALPHABET=<charstring>	Print out these characters in an alphabet sequence
			No value for this switch implies all unspecified
			characters in this font are to be placed in the
			alphabet sequence.
MATRIX=<charstring>	Print out an unlabeled matrix of these characters.
			If there is no <charstring>, or the alphabet
			switch has a value, use matrix as the default output.
PROVERB=<string>	Put out this string in the given font.  The proverb
			{poorrichard} is already defined.


A charstring is a sequence of characters or <NUL>,<TAB>,<LF>,<CR>,<FF>,<ALT>,
<SP> or <BS>, with the obvious meaning.  These control characters may be
included in a charstring.  However, unless the NONPRINTING switch is in
effect, they still won't print.

Within switches, ";", "⊗" and "≡" may be quoted by the use of the character "≡".

Output defaults to the base appended by a two character number, and
.PUB.  All output pub requires "FNTMAC.PUB[FNT,REF]" source_file.

XSPOOLING of files created with FIND-A-FONT should be done with the switch /NTN=32

A sample input file is on the next page; a sample session is on page 4.

Bugs, complaints, etc. to REF, particularly before he leaves (early August).
⊗APL25.FNT[XGP,SYS]/-sticky;
	spec=Special operators:¬πλ∞∂≡⊗→"#@abcdefghijklmnopqrstuvwxyz;
	alpha; by=QM; 
	message=Includes Iverson's weird collection of operators.;
	variety=APL symbols;
⊗ARM[XGP,SYS]/matrix;message=The arm in action.;variety=Graphics
⊗ASTR25[XGP,SYS]/matrix;by=TVR;variety=Astrology; 
	message=Aspects are incomplete.
⊗BASB30.FNT[XGP,SYS]/title=Baskerville;
⊗/pub=.begin fill≡;
The Baskerville fonts include lightface, italic, and bold.  The "BAS"
fonts include ligatures in place of certain special characters, as noted below. 
The ligatures and some additional special characters are also available in BAXS30.
.end≡;;
⊗BASB16.FNT[XGP,SYS]/sticky;lig=≡≡∨≥≠∞;proverb={poorrichard};variety=Baskerville;
		    class;sample;
⊗BASI16.FNT[XGP,SYS]
⊗BASB22.FNT[XGP,SYS]
⊗BAXS30.FNT/-pro;spec=BAXL30:@ABCDE;
	spec=BAXI30:PQRSTUVWXYZ[;spec=BAXB30:`abcde;
	message=Ligatures, scandinavian, and other symbols.;
	-class;-sample;-lig;matrix
⊗BASB30.FNT
⊗BDB30.FNT/title=Bodoni;newfile;
⊗BDB30.FNT/sticky;alph;prov={poorrichard};variety=Bodoni;class;sample
⊗BDI25/pro =Might as well be frank, monsieur. It would take a miracle to
get you out of Casablanca.
⊗BDI30
⊗BDI30X
⊗cmr8/title=Computer Modern;
⊗CMR6/sti;class;sample;variety=Computer Modern;
	alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789;
	proverb=Eat a live frog first thing in the morning, and nothing
worse will happen to you all day.
⊗CMR7/-pr
⊗CMR8
.r findaf
Command file?fontin

Output base?faf
				faf00.PUB
>APL25.FNT[XGP,SYS]
>ARM.FNT[XGP,SYS]
>ASTR25.FNT[XGP,SYS]
>BASB16.FNT[XGP,SYS]
>BASI16.FNT[XGP,SYS]
>BASB22.FNT[XGP,SYS]
>BAXS30.FNT[XGP,SYS]
>BASB30.FNT[XGP,SYS]
				faf01.PUB
>BDB30.FNT[XGP,SYS]
>BDI25.FNT[XGP,SYS]
>BDI30.FNT[XGP,SYS]
>BDI30X.FNT[XGP,SYS]
>CMR6.FNT[XGP,SYS]
>CMR7.FNT[XGP,SYS]
>CMR8.FNT[XGP,SYS]

End of SAIL execution

↑C
.pub faf00.pub
Swapping to SYS:PUB.DMP
FAF00.PUB 1
  FNTMAC.PUB[FNT,REF] 2 3 4.
 2 3 4 5 6 7 8 9 10.
PASS TWO  FAF00.XGP 1 2.

↑C

.XSPOOL FAF00.XGP/ntn=32

.
Exit
↑C
.pub faf01.pub
Swapping to SYS:PUB.DMP
FAF01.PUB 1
  FNTMAC.PUB[FNT,REF] 2 3 4.
 2;XGP Spooling Started. FAF00.XGP[FNT,REF]            12:36
 3 4 5 6 7 8 9 10;XGP Spooling Finished. FAF00.XGP[FNT,REF]            12:37
.
  2FSI.PUZ 1
Nofill line too long -- characters lost:25...
Line/Page 2FSI.PUZ 19/4/1[]
↑l
   LOGGING FAF01.LOG↑
Can't TAB past right margin to char 85
Line/Page 2FSI.PUZ 22/8/1[]
↑
PASS TWO  FAF01.XGP 1 2 3.

↑C
.XSPOOL FAF01.XGP/ntn=32

Exit
↑C
.